home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / PROFILER / KOMPOSER.TST < prev    next >
Encoding:
Text File  |  1989-06-16  |  11.4 KB  |  244 lines

  1.     { Profiler-Testversion zu B:\DEMOS.PAS\KOMPOSER.PAS }  
  2.  
  3. CONST ___ = 80;
  4.    ___2 =4;
  5. VAR __ : INTEGER ;
  6. VAR _ : ARRAY [1..___] OF REAL ;
  7. VAR _2 : ARRAY [1..___2] OF REAL ;
  8. VAR _h : STRING; 
  9. VAR _f : TEXT;
  10. { 7. Bundeswettbewerb Informatik 1988/1989 } 
  11. { 1. Runde,Aufgabe 1 ; Autor M.Berger      }
  12. {   Hinweise am Ende des Files beachten !  }
  13. CONST MAX_LAENGE_MOTIV=20;
  14. MAX_ANZAHL_TOENE=10;
  15. MAX_ANZAHL_SCHRITTE=20;
  16. TYPE ABBILDUNGSREGEL_DEF=RECORD
  17. ALT:CHAR;
  18. NEU:CHAR;
  19. END;
  20. WANDLUNGS_ART=(THEMA,VARIATION);
  21. VAR SATZFORM:ARRAY[1..MAX_ANZAHL_SCHRITTE]OF 
  22. WANDLUNGS_ART;
  23. ANZAHL_SCHRITTE:INTEGER;
  24. ABBILDUNGSREGEL:ARRAY[1..MAX_ANZAHL_TOENE]
  25. OF ABBILDUNGSREGEL_DEF;
  26. ANZAHL_TOENE:INTEGER;
  27. MOTIV:ARRAY[1..MAX_LAENGE_MOTIV]OF 
  28. CHAR;
  29. MOTIVLAENGE:INTEGER;
  30. PRESTOFAKTOR:REAL;
  31. ANZAHL_SAETZE:INTEGER;
  32. TONDAUER:REAL;
  33. I:INTEGER;
  34. PROCEDURE EINGABE;
  35. VAR I:INTEGER;
  36. X:CHAR;
  37. BEGIN _[25] := _[25] + 1 ;  _2[1] := _2[1] + 1 ; 
  38. CLRSCR  ; WRITELN('Computer-Composition  (bwINF 7 [88/89];Aufgabe 1)') ;
  39. WRITELN  ; WRITELN  ;
  40. ANZAHL_TOENE:=0;   _[6]:=_[6]+1; 
  41.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  42.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; ; 
  43. REPEAT _[31] := _[31] + 1 ; 
  44. ANZAHL_TOENE:=ANZAHL_TOENE+1;   _[6]:=_[6]+1; 
  45.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  46.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;  ; 
  47. WRITE('  Bitte Ton angeben : ') ;
  48. READ(KBD,ABBILDUNGSREGEL[ANZAHL_TOENE].ALT);   _[6]:=_[6]+1; 
  49.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  50.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;    _[5]:=_[5]+1;  ; 
  51. WRITE(ABBILDUNGSREGEL[ANZAHL_TOENE].ALT);   _[6]:=_[6]+1; 
  52.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  53.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;    _[5]:=_[5]+1;  ; 
  54. IF ABBILDUNGSREGEL[ANZAHL_TOENE].ALT<>' ' THEN BEGIN _[32] := _[32] + 1 ;  
  55. WRITE(' ; Wird abgebildet auf : ') ; 
  56. READ(KBD,ABBILDUNGSREGEL[ANZAHL_TOENE].NEU);   _[6]:=_[6]+1; 
  57.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  58.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;    _[5]:=_[5]+1;  ; 
  59. WRITE(ABBILDUNGSREGEL[ANZAHL_TOENE].NEU);   _[6]:=_[6]+1; 
  60.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  61.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;    _[5]:=_[5]+1;  ; 
  62.  END  ; 
  63. WRITELN;   _[6]:=_[6]+1;  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  64.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;    _[5]:=_[5]+1; ;
  65.  UNTIL(ANZAHL_TOENE=MAX_ANZAHL_TOENE)OR 
  66. (ABBILDUNGSREGEL[ANZAHL_TOENE].ALT=' ');   _[5]:=_[5]+1;    _[6]:=_[6]+1; 
  67.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  68.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;  ; 
  69. ANZAHL_TOENE:=ANZAHL_TOENE-1;   _[6]:=_[6]+1; 
  70.  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  71.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE; ; 
  72. WRITELN  ;
  73. MOTIVLAENGE:=0;   _[10]:=_[10]+1; 
  74.  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  75.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;  ;
  76. REPEAT _[33] := _[33] + 1 ; 
  77. MOTIVLAENGE:=MOTIVLAENGE+1;   _[10]:=_[10]+1; 
  78.  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  79.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE; ; 
  80. WRITE('  Bitte Ton des Themas angeben : ') ;
  81. READ(KBD,MOTIV[MOTIVLAENGE]);   _[10]:=_[10]+1; 
  82.  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  83.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;    _[9]:=_[9]+1;  ; WRITELN(
  84. MOTIV[MOTIVLAENGE]);   _[10]:=_[10]+1; 
  85.  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  86.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;    _[9]:=_[9]+1;  ; 
  87.  UNTIL(MOTIV[MOTIVLAENGE]=' ')OR(MOTIVLAENGE>MAX_LAENGE_MOTIV);
  88.    _[10]:=_[10]+1;  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  89.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;    _[9]:=_[9]+1; ;
  90. MOTIVLAENGE:=MOTIVLAENGE-1;   _[10]:=_[10]+1; 
  91.  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  92.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;  ; 
  93. WRITELN  ;
  94. ANZAHL_SCHRITTE:=0;   _[2]:=_[2]+1; 
  95.  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  96.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE;  ; 
  97. REPEAT _[34] := _[34] + 1 ; 
  98. ANZAHL_SCHRITTE:=ANZAHL_SCHRITTE+1;   _[2]:=_[2]+1; 
  99.  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  100.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE;  ; 
  101. WRITE('  Soll Thema (u)nverändert bleiben oder (v)ariiert werden ') ;
  102. READ(KBD,X);   _[30]:=_[30]+1;  ; 
  103. WRITELN(X);   _[30]:=_[30]+1; ; 
  104. IF UPCASE(X)='V' THEN BEGIN _[35] := _[35] + 1 ;  
  105. SATZFORM[ANZAHL_SCHRITTE]:=VARIATION;   _[2]:=_[2]+1; 
  106.  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  107.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE;    _[1]:=_[1]+1;  END  ; 
  108. IF UPCASE(X)='U' THEN BEGIN _[36] := _[36] + 1 ;  
  109. SATZFORM[ANZAHL_SCHRITTE]:=THEMA;   _[2]:=_[2]+1; 
  110.  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  111.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE;    _[1]:=_[1]+1;  END  ; 
  112. ;   _[30]:=_[30]+1; UNTIL((UPCASE(X)<>'V')AND(UPCASE(X)<>'U'))OR 
  113. (ANZAHL_SCHRITTE>MAX_ANZAHL_SCHRITTE);   _[2]:=_[2]+1; 
  114.  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  115.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE;    _[30]:=_[30]+1; ; 
  116. ANZAHL_SCHRITTE:=ANZAHL_SCHRITTE-1;   _[2]:=_[2]+1; 
  117.  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  118.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE; ; 
  119. WRITELN  ;
  120. WRITE('  Bitte Anzahl Sätze angeben : ') ;
  121. READLN(ANZAHL_SAETZE);   _[16]:=_[16]+1; 
  122.  IF ANZAHL_SAETZE<_[17] THEN _[17]:=ANZAHL_SAETZE; 
  123.  IF ANZAHL_SAETZE>_[18] THEN _[18]:=ANZAHL_SAETZE;  ;
  124. WRITE('  Bitte Tondauer im ersten Satz angeben : ') ; 
  125. READLN(TONDAUER);   _[19]:=_[19]+1;  IF TONDAUER<_[20] THEN _[20]:=TONDAUER; 
  126.  IF TONDAUER>_[21] THEN _[21]:=TONDAUER;  ;
  127. WRITE('  Bitte Prestofaktor angeben : ') ; 
  128. READLN(PRESTOFAKTOR);   _[13]:=_[13]+1; 
  129.  IF PRESTOFAKTOR<_[14] THEN _[14]:=PRESTOFAKTOR; 
  130.  IF PRESTOFAKTOR>_[15] THEN _[15]:=PRESTOFAKTOR;  ;
  131.  ;IF _2[1] > _[26] THEN _[26] := _2[1]; _2[1]:=_2[1]-1; END ;
  132. PROCEDURE GIB_SAETZE_AUS;
  133. VAR I,U:INTEGER;
  134. X:CHAR;
  135. PROCEDURE BILDE_SATZ(SCHACHTELUNG,VARIATIONEN:INTEGER);
  136. FUNCTION VARIIERT(NOTE:CHAR):CHAR;
  137. VAR I:INTEGER;
  138. X:CHAR;
  139. BEGIN _[54] := _[54] + 1 ;  _2[2] := _2[2] + 1 ; 
  140. FOR I:=1 TO ANZAHL_TOENE DO BEGIN _[61] := _[61] + 1 ;  
  141. IF ABBILDUNGSREGEL[I].ALT=NOTE THEN BEGIN _[62] := _[62] + 1 ;  X:=
  142. ABBILDUNGSREGEL[I].NEU;   _[57]:=_[57]+1;  IF I<_[58] THEN _[58]:=I; 
  143.  IF I>_[59] THEN _[59]:=I;    _[5]:=_[5]+1;    _[60]:=_[60]+1; END  ; 
  144. VARIIERT:=X;   _[60]:=_[60]+1;    _[56]:=_[56]+1;    _[57]:=_[57]+1; 
  145.  IF I<_[58] THEN _[58]:=I;  IF I>_[59] THEN _[59]:=I;    _[5]:=_[5]+1; END ; 
  146.    _[6]:=_[6]+1;  IF ANZAHL_TOENE<_[7] THEN _[7]:=ANZAHL_TOENE; 
  147.  IF ANZAHL_TOENE>_[8] THEN _[8]:=ANZAHL_TOENE;    _[57]:=_[57]+1; 
  148.  IF I<_[58] THEN _[58]:=I;  IF I>_[59] THEN _[59]:=I; ; 
  149.  ;IF _2[2] > _[55] THEN _[55] := _2[2]; _2[2]:=_2[2]-1; END ;
  150. VAR I,U:INTEGER;
  151. X:CHAR;
  152. BEGIN _[46] := _[46] + 1 ;  _2[3] := _2[3] + 1 ; 
  153. IF SCHACHTELUNG>0 THEN BEGIN _[70] := _[70] + 1 ;  
  154. FOR I:=1 TO ANZAHL_SCHRITTE DO BEGIN _[71] := _[71] + 1 ;  
  155. IF SATZFORM[I]=THEMA THEN BEGIN _[72] := _[72] + 1 ;  
  156. BILDE_SATZ(SCHACHTELUNG-1,VARIATIONEN)
  157. ;   _[51]:=_[51]+1;  IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN; 
  158.  IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN;    _[48]:=_[48]+1; 
  159.  IF SCHACHTELUNG<_[49] THEN _[49]:=SCHACHTELUNG; 
  160.  IF SCHACHTELUNG>_[50] THEN _[50]:=SCHACHTELUNG;
  161.  END  ELSE BEGIN _[73] := _[73] + 1 ;  
  162. BILDE_SATZ(SCHACHTELUNG-1,VARIATIONEN+1)
  163. ;   _[51]:=_[51]+1;  IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN; 
  164.  IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN;    _[48]:=_[48]+1; 
  165.  IF SCHACHTELUNG<_[49] THEN _[49]:=SCHACHTELUNG; 
  166.  IF SCHACHTELUNG>_[50] THEN _[50]:=SCHACHTELUNG; END ;    _[63]:=_[63]+1; 
  167.  IF I<_[64] THEN _[64]:=I;  IF I>_[65] THEN _[65]:=I;    _[1]:=_[1]+1;  END ; 
  168.    _[2]:=_[2]+1;  IF ANZAHL_SCHRITTE<_[3] THEN _[3]:=ANZAHL_SCHRITTE; 
  169.  IF ANZAHL_SCHRITTE>_[4] THEN _[4]:=ANZAHL_SCHRITTE;    _[63]:=_[63]+1; 
  170.  IF I<_[64] THEN _[64]:=I;  IF I>_[65] THEN _[65]:=I; 
  171.  END  ELSE BEGIN _[74] := _[74] + 1 ;  
  172. FOR I:=1 TO MOTIVLAENGE DO BEGIN _[75] := _[75] + 1 ;  
  173. X:=MOTIV[I];   _[63]:=_[63]+1;  IF I<_[64] THEN _[64]:=I; 
  174.  IF I>_[65] THEN _[65]:=I;    _[9]:=_[9]+1;    _[69]:=_[69]+1;  ; 
  175. IF VARIATIONEN>0 THEN BEGIN _[76] := _[76] + 1 ;  
  176. FOR U:=1 TO VARIATIONEN DO BEGIN _[77] := _[77] + 1 ;  
  177. X:=VARIIERT(X);   _[69]:=_[69]+1;  END ;    _[51]:=_[51]+1; 
  178.  IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN; 
  179.  IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN;    _[66]:=_[66]+1; 
  180.  IF U<_[67] THEN _[67]:=U;  IF U>_[68] THEN _[68]:=U;  END  ; 
  181. WRITE(X);   _[69]:=_[69]+1;    _[51]:=_[51]+1; 
  182.  IF VARIATIONEN<_[52] THEN _[52]:=VARIATIONEN; 
  183.  IF VARIATIONEN>_[53] THEN _[53]:=VARIATIONEN;  ; 
  184.  END;   _[10]:=_[10]+1;  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  185.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;    _[63]:=_[63]+1; 
  186.  IF I<_[64] THEN _[64]:=I;  IF I>_[65] THEN _[65]:=I;  ; 
  187. WRITE(' ') ; 
  188.  END;   _[48]:=_[48]+1;  IF SCHACHTELUNG<_[49] THEN _[49]:=SCHACHTELUNG; 
  189.  IF SCHACHTELUNG>_[50] THEN _[50]:=SCHACHTELUNG;  ; 
  190.  ;IF _2[3] > _[47] THEN _[47] := _2[3]; _2[3]:=_2[3]-1; END ;
  191. BEGIN _[37] := _[37] + 1 ;  _2[4] := _2[4] + 1 ; 
  192. FOR I:=1 TO ANZAHL_SAETZE DO BEGIN _[78] := _[78] + 1 ;  
  193. CLRSCR  ; WRITE('Computer-Composition :  -') ; 
  194. FOR U:=1 TO MOTIVLAENGE DO BEGIN _[79] := _[79] + 1 ;  WRITE(MOTIV[U]);
  195.    _[42]:=_[42]+1;  IF U<_[43] THEN _[43]:=U;  IF U>_[44] THEN _[44]:=U; 
  196.    _[9]:=_[9]+1;  END ;    _[10]:=_[10]+1; 
  197.  IF MOTIVLAENGE<_[11] THEN _[11]:=MOTIVLAENGE; 
  198.  IF MOTIVLAENGE>_[12] THEN _[12]:=MOTIVLAENGE;    _[42]:=_[42]+1; 
  199.  IF U<_[43] THEN _[43]:=U;  IF U>_[44] THEN _[44]:=U;  ; 
  200. WRITE('- ; Satz ',I,' ; Tondauer : ');   _[39]:=_[39]+1; 
  201.  IF I<_[40] THEN _[40]:=I;  IF I>_[41] THEN _[41]:=I; ; 
  202. IF I>1 THEN BEGIN _[80] := _[80] + 1 ;  TONDAUER:=TONDAUER/PRESTOFAKTOR;
  203.    _[13]:=_[13]+1;  IF PRESTOFAKTOR<_[14] THEN _[14]:=PRESTOFAKTOR; 
  204.  IF PRESTOFAKTOR>_[15] THEN _[15]:=PRESTOFAKTOR;    _[19]:=_[19]+1; 
  205.  IF TONDAUER<_[20] THEN _[20]:=TONDAUER; 
  206.  IF TONDAUER>_[21] THEN _[21]:=TONDAUER;  END  ; 
  207. WRITELN(TONDAUER:3:2);   _[19]:=_[19]+1; 
  208.  IF TONDAUER<_[20] THEN _[20]:=TONDAUER; 
  209.  IF TONDAUER>_[21] THEN _[21]:=TONDAUER;    _[39]:=_[39]+1; 
  210.  IF I<_[40] THEN _[40]:=I;  IF I>_[41] THEN _[41]:=I;  ; 
  211. WRITELN  ; WRITE(' ') ;
  212. BILDE_SATZ(I,0);   _[39]:=_[39]+1;  IF I<_[40] THEN _[40]:=I; 
  213.  IF I>_[41] THEN _[41]:=I;  ; 
  214. READ(KBD,X);   _[45]:=_[45]+1;  ; 
  215.  END;   _[16]:=_[16]+1;  IF ANZAHL_SAETZE<_[17] THEN _[17]:=ANZAHL_SAETZE; 
  216.  IF ANZAHL_SAETZE>_[18] THEN _[18]:=ANZAHL_SAETZE;    _[39]:=_[39]+1; 
  217.  IF I<_[40] THEN _[40]:=I;  IF I>_[41] THEN _[41]:=I;  ; 
  218.  ;IF _2[4] > _[38] THEN _[38] := _2[4]; _2[4]:=_2[4]-1; END ;
  219. BEGIN FOR __:= 1 TO ___ DO _[__]:=0;  FOR __:= 1 TO ___2 DO _2[__]:=-1;  
  220. _[3]:=1.9E+999;_[4]:=-1.9E+999;_[7]:=1.9E+999;_[8]:=-1.9E+999; 
  221. _[11]:=1.9E+999;_[12]:=-1.9E+999;_[14]:=1.9E+999;_[15]:=-1.9E+999; 
  222. _[17]:=1.9E+999;_[18]:=-1.9E+999;_[20]:=1.9E+999;_[21]:=-1.9E+999; 
  223. _[23]:=1.9E+999;_[24]:=-1.9E+999;_[28]:=1.9E+999;_[29]:=-1.9E+999; 
  224. _[40]:=1.9E+999;_[41]:=-1.9E+999;_[43]:=1.9E+999;_[44]:=-1.9E+999; 
  225. _[49]:=1.9E+999;_[50]:=-1.9E+999;_[52]:=1.9E+999;_[53]:=-1.9E+999; 
  226. _[58]:=1.9E+999;_[59]:=-1.9E+999;_[64]:=1.9E+999;_[65]:=-1.9E+999; 
  227. _[67]:=1.9E+999;_[68]:=-1.9E+999; 
  228. EINGABE  ; 
  229. GIB_SAETZE_AUS  ; 
  230. ;ASSIGN(_f,'B:\TESTFILE.TST\KOMPOSER.WRT');
  231. REWRITE(_f);
  232. WRITELN(_f,'(c)1989mkbmeersaukleintier');
  233. WRITELN(_f,'B:\DEMOS.PAS\KOMPOSER.PAS');
  234. WRITELN(_f,'ja');
  235. WRITELN(_f,'80.0');
  236. FOR __ := 1 TO ___ DO BEGIN 
  237. STR(_[__],_h);
  238. WRITELN(_f,_h); END;
  239. CLOSE(_f);
  240. WRITELN;WRITELN;
  241. WRITELN('-> Profile-Testlauf beendet. Werte in B:\TESTFILE.TST\KOMPOSER.WRT');
  242. WRITELN('-> Bitte profile_2.prg starten. ');
  243. END.
  244.